package com.doubao.device.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 智能体表
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("smart_device")
public class SmartDevice implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 唯一标识
     */
    private String uuid;

    /**
     * 创建者ID
     */
    private Long userId;

    /**
     * 智能体名称
     */
    private String name;

    /**
     * 头像
     */
    private String avatar;

    /**
     * 描述
     */
    private String description;

    /**
     * 提示词
     */
    private String prompt;

    /**
     * 分类ID
     */
    private Long categoryId;

    /**
     * 版本号
     */
    private String version;

    /**
     * AI提供商ID
     */
    private Long aiProviderId;

    /**
     * AI模型ID - 修改为String类型以支持bot-id格式
     */
    private String aiModelId;  // 从Long改为String

    /**
     * AI模型名称（非数据库字段）
     */
    @TableField(exist = false)
    private String modelName;

    /**
     * 是否公开 1:是 0:否
     */
    private Integer isPublic;

    /**
     * 是否付费 1:是 0:否
     */
    private Integer isPremium;

    /**
     * 使用次数
     */
    private Integer usageCount;

    /**
     * 收藏次数
     */
    private Integer collectionCount;

    /**
     * 平均评分
     */
    private BigDecimal averageRating;

    /**
     * 最大上下文长度
     */
    private Integer maxContextLength;

    /**
     * 系统提示词hash
     */
    private String systemPromptHash;

    /**
     * 知识库ID列表，多个用逗号分隔
     */
    private String knowledgeBaseIds;

    /**
     * 能力集合，如search,code,image，多个用逗号分隔
     */
    private String abilities;

    /**
     * 语音ID
     */
    private String voiceId;

    /**
     * 语音类型，如zh_female_qingxinnvsheng_mars_bigtts
     */
    private String voiceType;

    /**
     * 语音速率
     */
    private Float voiceSpeedRatio;

    /**
     * API端点ID
     */
    private String apiEndpointId;

    /**
     * API密钥
     */
    private String apiKey;

    /**
     * API基础URL
     */
    private String apiBaseUrl;

    /**
     * API超时设置（秒）
     */
    private Integer apiTimeout;

    /**
     * API重试次数
     */
    private Integer apiRetryTimes;

    /**
     * 输入tokens累计
     */
    private Long promptTokens;

    /**
     * 输出tokens累计
     */
    private Long completionTokens;

    /**
     * 扩展信息JSON
     */
    private String extJson;

    /**
     * 状态 1:正常 0:禁用
     */
    private Integer status;

    /**
     * 是否删除 1:是 0:否
     */
    @TableLogic
    private Integer deleted;

    /**
     * 创建时间
     */
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;

    /**
     * 创建者名称（非数据库字段）
     */
    @TableField(exist = false)
    private String creatorName;
}